import java.util.ArrayList;
import java.util.List;


public class Test3 {
    public static void main2(String[] args) {
        List<List<Integer>> list2 = new ArrayList<>();
        list2.add(new ArrayList<>());
        list2.add(new ArrayList<>());
    }

    public List<List<Integer>> generate(int numRows) {
        List<List<Integer>> ret = new ArrayList<>();//二维数组，ret对象数组中每个元素都是list
        //1、先处理第一行
        List<Integer> list = new ArrayList<>();//每一行都是list
        list.add(1);
        ret.add(list);//把第一行添加到二维数组的0下标处

        //2、从第2行开始计算，每个list当中的数据
        for (int i = 1; i < numRows; i++) {
            //3、先准备当前行数据
            List<Integer> curRow = new ArrayList<>();
            //4、准备当前行的第一个数据
            curRow.add(1);//每一行，第一个数都为1
            //5、准备当前行的中间数字
            List<Integer> prevRow = ret.get(i - 1);//上一行
            //j的第一个下标已经有了是1，从第二个下标开始且最后一个下标也有了是1，j的值不能取到i
            for (int j = 1; j < i; j++) {
                //[i][j] = [i-1][j] + [i-1][j-1]
                int val = prevRow.get(j) + prevRow.get(j - 1);
                curRow.add(val);
            }
            //6、准备当前行最后一个数据
            curRow.add(1);//每一行，最后一个数都为1
            //7、把这个数据放到二维数组当中
            ret.add(curRow);
        }
        return ret;
    }
}
